﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Configuration;
using System.Data.SqlClient;
using Website.Logger;
using DAL;
using UtilityExtensions;
using BOL.Cliente;
using WebLib;
using System.Web.Script.Services;
using System.Web.Services;


namespace UILGestion.Admin.Cliente
{
    public partial class ClienteReadForm : System.Web.UI.Page
    {
        public ClienteReadForm()
        {
            bol = new ClienteBL();
        }

        private ClienteBL bol;
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                try
                {
                    
                    internalID.Value = (string)Request.QueryString["id"];
                    menuCtrl1.loadMenuAdmin();
                    FormatForm();

                }
                catch (SqlException sqlex)
                {
                    WebServerSideSqlError.Log(sqlex);

                    ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                     "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


                }
                catch (Exception ex)
                {
                    WebServerSideError.Log(ex);
                    ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                         "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

                }

            }
        }

        private void FormatForm()
        {

           
            LoadCliente();

        }
        private void LoadCliente()
        {
            DAL.Cliente cliente = DbUtil.Db.Clientes.Single(p => p.idInternal == internalID.Value.ToInt());

            if (cliente.bitEsJuridica == true)
            {
                empresaPanel.Visible = true;
                personaPanel.Visible = false;
                
                razonSocialTextBox.Text = cliente.razonSocial;
                RUCTXT.Text = cliente.numDocumento;
                
                
                

            }
            else
            {
                empresaPanel.Visible = false;
                personaPanel.Visible = true;
                
                nombresTXT.Text = cliente.nombre;
                apellidoPatTxt.Text = cliente.apellidoPat;
                apellidoMatTXT.Text = cliente.apellidoMat;
                nacionalidadDDL.Text =cliente.Nacionalidad.descripcion;
                tipoDocumentoDDL.Text = cliente.TipoDocumento.abreviacion;
                documentoIdentidadHLK.Text = cliente.numDocumento;
                
                //verificamos que exita documento DNI en Orden de Venta ultimo

                var ordenVentaULT=DbUtil.Db.OrdenVentas.Where(p=>p.idCliente==cliente.idInternal );

                if (ordenVentaULT.Count()>0)
                {

                    var DNI = ordenVentaULT.OrderByDescending(p => p.fecha).First().OrdenVentaRequisitos.SingleOrDefault(p => p.idRequisitoItem == 1);//DNI
                    if  (DNI!= null)
                    {
                        if (DNI.idArchivo != null)
                        {
                            
                            documentoIdentidadHLK.ForeColor=System.Drawing.Color.Blue;
                            documentoIdentidadHLK.NavigateUrl = string.Format("../../Admin/ImagenSetForm.aspx?type=Documento&id={0}", DNI.idArchivo);
                        }
                    }
                }

                
                ocupacionTXT.Text = cliente.Ocupacion;
                GeneroDDL.Text = cliente.GrupoDatoitem1.descripcion;
                convivienteCHK.Checked = cliente.bitConviviente.Value;
                estadocivilLBL.Text = cliente.GrupoDatoitem2.descripcion;
               
            }
            telefonoTxt.Text = cliente.telefono;
            celularTXT.Text = cliente.celular;
            emailTextBox.Text = cliente.email;
            webTXT.Text = cliente.web;
            faxTXT.Text = cliente.fax;
            bitActivoCHK.Checked = cliente.bitActivo;
            correoAlternativoTXT.Text = cliente.emailAlternativo;
            comentarioTXT.Text = cliente.comentario;

            //
            direccionLBL.Text = cliente.Direccion.descripcion;
            referenciaLBL.Text = cliente.Direccion.referencia;
            departamentoLBL.Text = cliente.Direccion.Distrito.Provincia.Ciudade.VC_NOMBRE;
            provinciaLBL.Text = cliente.Direccion.Distrito.Provincia.VC_NOMBRE;
            distritoLBL.Text = cliente.Direccion.Distrito.VC_NOMBRE;
            urbanizacionTXT.Text = cliente.Direccion.urbanizacion;

            conyugeTXT.Text = cliente.conyuge;
            dniconyugeTXT.Text = cliente.DNIConyuge;

        }

        protected void button(object sender, EventArgs e)
        {
            try
            {

                if (((Button)sender).ID == refreshBTN.ID)
                {
                    Response.Redirect("ClienteReadForm.aspx?id="+internalID.Value, true);
                }
                if (((Button)sender).ID==nuevoBTN.ID)
                {
                    Response.Redirect("~/Admin/Cliente/ClienteEditForm.aspx?type=A",true);
                }
                if (((Button)sender).ID == EditarBTN.ID)
                {
                    Response.Redirect("~/Admin/Cliente/ClienteEditForm.aspx?type=E&id={0}".Fmt(internalID.Value), true);
                }
                if (((Button)sender).ID == eliminarBTN.ID)
                {
                    bol.Delete(internalID.Value.ToInt());
                    Response.Redirect("~/Admin/Cliente/ClienteListForm.aspx", true);
                }
                if (((Button)sender).ID == anteriorBTN.ID)
                {
                    int idAnterior=new DAL.Cliente().getidAnterior(DbUtil.Db, internalID.Value.ToInt());
                    Response.Redirect("~/Admin/Cliente/ClienteReadForm.aspx?type=E&id={0}".Fmt(idAnterior), true);
                }
                if (((Button)sender).ID == siguienteBTN.ID)
                {
                    int idSiguiente = new DAL.Cliente().getidAnterior(DbUtil.Db, internalID.Value.ToInt());
                    Response.Redirect("~/Admin/Cliente/ClienteReadForm.aspx?type=E&id={0}".Fmt(idSiguiente), true);
                }

                menuCtrl1.loadMenuAdmin();
                FormatForm();

            }
            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);

                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                     "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }
        }

    }
}